import { defineStore } from 'pinia';
import { ref, computed, watch } from 'vue';
import router from '../router';

// 定义 Pinia store
export const useCountdownStore = defineStore('countdown', () => {
  // 保存订单创建的时间戳
  const orderCreationTime = ref<number>(0);

  // 记录当前时间戳
  const orderCurrentTime = ref<number>(0);

  // 当前时间的计算属性
  const currentTime = computed(() => Math.floor(orderCurrentTime.value / 1000));

  // 订单创建时间的计算属性
  const creationTime = computed(() => Math.floor(orderCreationTime.value / 1000));

  // 订单状态，默认为 '未支付', 0为未支付，1为已支付，2为已取消
  const orderStatus = ref<0 | 1 | 2>(0);

  // 计算剩余时间，5分钟倒计时
  const totalTime = computed(() => {
    const elapsed = currentTime.value - creationTime.value;
    const remainingTime = 15 - elapsed; // 300 秒 = 5 分钟
    return remainingTime > 0 ? remainingTime : 0; // 确保剩余时间不小于 0
  });


  // 计算订单剩余的分钟和秒钟
  const minutes = computed<number>(() => Math.floor(totalTime.value / 60));
  const seconds = computed<number>(() => Math.floor(totalTime.value % 60));

  // 监听剩余时间变化，超过5分钟则自动取消订单
  const cancelIfOverTimeLimit = () => {
    if (totalTime.value <= 0 && orderStatus.value === 0) { // 如果剩余时间小于等于 0，且订单状态为未支付，则取消订单
      orderStatus.value = 2; // 2表示取消

      alert('支付超时，订单已取消');
    }

  };

  const totaltime =totalTime.value;
  return {
    totaltime,
    minutes,
    seconds,
    orderCreationTime,
    orderStatus,
    orderCurrentTime,
    cancelIfOverTimeLimit,
  };
});
